责任链模式


责任链模式是定义n个请求处理器,连成一条链,请求可以第一个传递到最后一个,可以被任意一个处理器处理

类图

示例

public class Request{
    
}

public class abstract Handler {
    
    // 后继者,也就是下一个处理器
    protected Handler successor;
    
    public Handler(Handler successor){
        this.successor = successor;
    }
    
    // 处理请求
    protected abstract void handle(Request request);
    
}

定义两个处理器

public class ConcreteHandlerA extends Handler {
    public ConcreteHandlerA(Handler successor) {
        super(successor);
    }

    @Override
    protected void handle(Request request) {
        // do something
        
        // 请求传给下一个处理器处理
        if (successor != null) {
            successor.handle(request);
        }
    }
}

public class ConcreteHandlerB extends Handler {
    public ConcreteHandlerB(Handler successor) {
        super(successor);
    }

    @Override
    protected void handle(Request request) {
        // do something
        
        // 请求传给下一个处理器处理
        if (successor != null) {
            successor.handle(request);
        }
    }
}

使用:

Handler handler1 = new ConcreteHandlerA(null);
Handler handler2 = new ConcreteHandlerA(handler1);

handler2.handle(request);
文章作者: 周君
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 周君 !
评论